package com.yami.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.dto.ProductDockingDTO;
import com.yami.shop.bean.model.ProductDocking;
import org.springframework.transaction.annotation.Transactional;

/**
 * 商品对接Service
 */
public interface ProductDockingService extends IService<ProductDocking> {
    /**
     * 分页查询商品对接列表
     * @param page 分页参数
     * @param shopId 店铺ID
     * @param prodName 商品名称
     * @param dockingStatus 对接状态
     * @return 分页结果
     */
    IPage<ProductDockingDTO> pageProductDocking(Page<ProductDockingDTO> page, Long shopId, String prodName, Integer dockingStatus);

    /**
     * 获取商品对接详情
     * @param id 对接ID
     * @return 商品对接详情
     */
    ProductDockingDTO getProductDockingById(Long id);

    /**
     * 申请商品对接
     * @param productDocking 商品对接信息
     */
    @Transactional(rollbackFor = Exception.class)
    void applyProductDocking(Long prodId, Long categoryId, Double fareIncrease, Long shopId, String name,Long id);

    /**
     * 审核商品对接
     * @param id 对接ID
     * @param dockingStatus 审核状态（1-通过 2-拒绝）
     * @param rejectReason 拒绝原因
     */
    void auditProductDocking(Long id, Integer dockingStatus, String rejectReason);

    /**
     * 取消商品对接
     * @param id 对接ID
     */
    void cancelProductDocking(Long id);

    /**
     * 根据店铺ID和分类ID将商品存入对接表
     * @param shopId 店铺ID
     * @param categoryId 分类ID
     * @return 插入数量
     */
    int dockProductsByCategory(Long shopId, Long categoryId);
} 